<?php
/**
 * Created by PhpStorm.
 * User: 杨胜飞
 * Date: 2017\8\26 0026
 * Time: 11:20
 */

namespace app\common\model;


use phpDocumentor\Reflection\Types\Null_;
use think\Db;
use think\Model;

/**
 * Class ContractEquipment
 * @package app\common\model
 *      合同设备关联表 模型
 */
class ContractEquipment extends Model
{

    /**
     * @param $data  ->  数组  ['key' => 'value']
     * @return bool|false|int
     *     添加 合同设备关联表 数据
     */
    public function add($data)
    {
        // 添加一条数据 过滤表中不存在的字段
        $this->data($data);
        $result = $this->allowField(true)->save();
        // 判断结果 并返回
        if ($result !== 1) {
            return false;
        }
        return $result;
    }

    /**
     * @param $where  ->   条件  ['key' => 'value']
     * @return array|bool|false|\PDOStatement|string|Model
     *     根据条件 $where 查询单条数据
     */
    public function getOne($where,$filed='*',$join=[])
    {
        // 根据条件查询单条数据
        $userInfo = $this->alias('ce')->join($join)->where($where)->field($filed)->find();
        // 判读结果并返回
        if ($userInfo === NULL) {
            return false;
        }
        return $userInfo;
    }

    /**
     * @param $where
     * @return false|\PDOStatement|string|\think\Collection
     *         根据条件 $where 查询单条数据
     */
    public function getAll($where)
    {
        // 根据条件查询单条数据
        $userInfo = $this->where($where)->select();
        return $userInfo;
    }

    /**
     * @param $where  ->   条件  ['key' => 'value']
     * @return array|bool|false|\PDOStatement|string|Model
     *     根据条件 $where 查询单条数据
     */
    public function getLists($where,$field='*')
    {
        // 根据条件查询单挑数据
        $userInfo = $this->where($where)->field($field)->cache(true)->select();
        // 判读结果并返回
        if ($userInfo === NULL) {
            return false;
        }
        return $userInfo;
    }

    /**
     * @return bool|false|\PDOStatement|string|\think\Collection
     *     获取 合同设备表 所有数据
     */
    public function getList()
    {
        // 查询合同设备表数据
        $data = $this->cache(true)->select();
        // 判断结果并返回
        if ($data == false) {
            return false;
        }
        return $data;
    }

    /**
     * @param $where  ->  数组  ['key' => 'value']
     * @return bool|int
     *      根据条件 $where 删除单条数据
     */
    public function remove($where)
    {
        // 根据条件删除数据
        $result = $this->where($where)->delete();
        // 判断结果 并返回
        if ($result == false) {
            return false;
        }
        return $result;
    }

    /**
     * @param $where  ->  条件  ['key' => 'value']
     * @param $data   ->  数据  ['key' => 'value', 'key' => 'value']
     * @return $this|bool
     *     根据条件 $where 修改数据  注意传参顺序
     */
    public function edit($where,$data)
    {
        // 根据条件修改单条数据
        $result = $this->where($where)->update($data);
        // 判断结果 并返回数据
        if ($result == false) {
            return false;
        }
        return $result;
    }

    /**
     * @param $where
     * @param $field
     * @return mixed
     *       根据条件查询  获取设备台数
     */
    public function get_id_count($contract_id)
    {
        $contract_id = ['contract_id' => $contract_id];
        // 查询合同设备表数据
        $count = $this->where($contract_id)->count();

        return $count;

    }

    /**
     * @param $where
     * @param $field
     * @param string $group
     * @return false|\PDOStatement|string|\think\Collection
     *         根据条件查询合同设备关联表数据
     */
    public function get_id_all($where, $field = '*')
    {

       $equipment = $this->db()
                        ->field($field)
                        ->where($where)
                        ->select();

       return $equipment;
    }

    /*
     *  获取设备信息
     *  @author ligang
     *  @param  array   $where
     *  @param  array   $join
     *  @param  string   $field
     *  @return array
     */
    public function getEquipmentsData($where=[],$join=[],$field='*')
    {
        if (empty($join)){
            $result = Db::name('contract_equipment')->where($where)->field($field)->select();
        }else{
            $result = Db::name('contract_equipment')->where($where)->field($field)->join($join)->select();
        }
        return  $result;
    }

    /*
     *  更新设备信息
     *  @author ligang
     *  @param  array   $where
     *  @param  array   $data   更新数据（可包含主键）
     *  @return array
     */
    public function updateEquipmentsData($where=[],$data)
    {
        $result = Db::name('contract_equipment')->where($where)->update($data);
        return  $result;
    }

    /*
     *  添加设备信息
     *  @author ligang
     *  @param  array   $data   添加数据
     *  @return array
     */
    public function insertEquipmentsData($data)
    {
        $result = Db::name('contract_equipment')->insertGetId($data);
        return  $result;
    }

    /*
     *  批量添加设备信息
     *  @author ligang
     *  @param  array   $data   添加数据（二维数组）
     *  @return array
     */
    public function insertAllEquipmentsData($data)
    {
        $result = Db::name('contract_equipment')->insertAll($data);
        return  $result;
    }

    /*
     *  获取单条设备信息
     *  @author ligang
     *  @param  array   $data   添加数据（二维数组）
     *  @return array
     */
    public function findEquipmentsData($where=[],$join=[],$field='*')
    {
        if (empty($join)){
            $result = Db::name('contract_equipment')->where($where)->field($field)->find();
        }else{
            $result = Db::name('contract_equipment')->join($join)->where($where)->field($field)->find();
        }
        return  $result;
    }

}